DHCP Snooping是
DHCP 的一种安全特性,主要应用在
交换机 上,作用是屏蔽接入网络中的非法的
DHCP 服务器。即开启 DHCP Snooping 功能后,网络中的客户端只有从管理员指定的
DHCP 服务器获取
IP 地址。由于
DHCP 报文缺少认证机制,如果网络中存在非法
DHCP 服务器,管理员将无法保证客户端从管理员指定的
DHCP服务器获取合法地址,客户机有可能从非法
DHCP 服务器获得错误的
IP 地址等配置信息,导致客户端无法正常使用网络。启用 DHCP Snooping 功能后,必须将
交换机上的端口设置为信任(Trust)和非信任(Untrust)状态,
交换机 只转发信任端口的 DHCP OFFER/ACK/NAK报文,丢弃非信任端口的 DHCP OFFER/ACK/NAK 报文,从而达到阻断非法
DHCP 服务器的目的。建议将连接
DHCP 服务器的端口设置为信任端口,其他端口设置为非信任端口。此外 DHCP Snooping 还会监听经过本机的
DHCP 数据包,提取其中的关键信息并生成 DHCP Binding Table 记录表,一条记录包括
IP、MAC、租约时间、端口、
VLAN、类型等信息,结合 DAI(Dynamic ARP Inspection)和 IPSG(IP Source Guard)可实现ARP防欺骗和IP流量控制功能。
介绍
当
交换机开启了 DHCP-Snooping后,会对DHCP
报文进行侦听,并可以从接收到的DHCP Request或DHCP Ack报文中提取并记录IP地址和MAC地址信息。另外,DHCP-Snooping允许将某个物理端口设置为信任端口或不信任端口。信任端口可以正常接收并转发DHCP Offer报文,而不信任端口会将接收到的DHCP Offer报文丢弃。这样,可以完成交换机对假冒DHCP Server的屏蔽作用,确保客户端从合法的DHCP Server获取IP地址。
作用
1.dhcp-snooping的主要作用就是隔绝非法的dhcp server,通过配置非信任端口。
2.与交换机DAI的配合,防止ARP病毒的传播。
3.建立和维护一张dhcp-snooping的绑定表,这张表一是通过dhcp ack包中的ip和mac地址生成的,二是可以手工指定。这张表是后续
DAI(dynamic arp inspect)和
IPSource Guard 基础。这两种类似的技术,是通过这张表来判定ip或者
mac地址是否合法,来限制用户连接到网络的。
4.通过建立信任端口和非信任端口,对非法
DHCP服务器进行隔离,信任端口正常转发DHCP数据包,非信任端口收到的服务器响应的DHCP offer和DHCPACK后,做丢包处理,不进行转发。
机制概述
DHCP 都非常熟悉了,对于 DHCP 客户端而言,初始过程中都是通过发送广播的 DHCP discovery 消息寻找 DHCP 服务器,然而这时候如果内网中存在私设的 DHCP 服务器,那么就会对网络造成影响,例如客户端通过私设的 DHCP 服务器拿到一个非法的地址,最终导致 PC 无法上网。
在 DHCP snooping 环境中(部署在交换机上),我们将端口视为 trust 或 untrust 两种安全级别,也就是信任或非信任接口。在交换机上,将连接合法 DHCP 服务器的接口配置为 trust 。只有 trust 接口上收到的来自 DHCPserver 的报文(如 DHCPOFFER、DHCPACK、DHCPNAK 或者 DHCPLEASEQUERY)才会被放行,相反,在 untrust 接口上收到的来自 DHCPserver 的报文将被过滤掉,这样一来就可以防止非法的 DHCPserver 接入。同时在部署了 DHCP Snooping 的交换机本地,还能维护一张 DHCP snooping 的绑定数据库(binding database),用于保存侦听到的 DHCP 交互的表项,信息包括(针对 untrust 接口的):MAC 地址、IP 地址(DHCP 分配的)、租期、绑定类型、VLAN 号、接口编号(DHCP 客户端也就是连接客户端 PC 的 untrust 接口)。这个 DHCP snooping binding database 除了可以做一些基本的安全接入控制,还能够用于 DAI 等防 ARP 欺骗的解决方案。
一台支持 DHCP snooping 的交换机,如果在其 untrust 接口上,收到来自下游交换机发送的、且带有 option 82 的 DHCP 报文,则默认的动作是丢弃这些报文。如果该交换机开启了 DHCP snooping 并且带有 option 82 的 DHCP 报文是在 trusted 接口上收到的,则交换机接收这些报文,但是不会根据报文中包含的相关信息建立 DHCP binding database 表项。
如果交换机确实通过一个 untrust 接口连接了下游交换机,并且希望放行该接口收到的、下游交换机发送出来的带有 option 82 的 DHCP 报文,则可使用全局命令:ip dhcp snooping information option allow-untrusted,同时由于是通过 untrust 接口收到的 DHCP 报文,因此会根据侦听的结果创建 DHCP snooping binding database 表项。
配置
以Cisco交换机为例:
switch(config)#ip dhcp snooping
switch(config)#ip dhcp snooping vlan 10
/*在Vlan10启用dhcp snooping
switch(config-if)#ip dhcp snooping limit rate 10
/*dhcp包的
转发速率,超过后接口就shutdown,默认不限制;
switch(config-if)#ip dhcp snooping trust
/*这样这个端口就变成了信任端口,信任端口可以正常接收并转发DHCP Offer
报文switch#ip dhcp snooping binding 0009.3452.3ea4 vlan 7 192.168.10.5 interface gi1/0/10
/*这样可以静态ip和mac一个绑定;
switch(config)#ip dhcp snooping database tftp:// 10.1.1.1/dhcp_table
/*因为掉电后,这张绑定表就消失了,所以要选择一个保存的地方,ftp,tftp,flash皆可。本例中的dhcp_table是文件名,而不是文件夹,同时文件名要手工创建一个。
show ip dhcp snooping
防止ARP污染
DHCP snooping还可以跟踪主机的物理位置,从而可以防御(
ARP)缓存污染攻击。它在防御这些攻击的过程中发挥重要作用,因为您可以使用DHCP snooping技术丢弃一些来源与目标MAC地址不符合已定义规则的DHCP消息。管理会收到通过DHCP snooping警报通知的违规行为。当DHCP snooping服务检测到违规行为时,它会在系统日志服务器上记录一条消息“DHCP Snooping”。
DHCP snooping是实现2层协议流量安全性的第一步。恶意
DHCP服务器不仅会导致网络问题,它们还可以被攻击者用于转发敏感流量和发起中间人攻击。如果还没有做好这些措施,那么一定要考虑实现这些防御措施,保证网络基础架构的
安全性。
应用场景
(1)对网络安全要求程度比较高和对
IP地址管理有一定需求的单位,如xx烟草、XX电网等
(2)此策略应配置在
接入层交换机当中。其中,在交换机上联端口以及聚合端口需配置为信任端口,需静态IP的端口需开启信任!
交换机DHCP Snooping
案例配置拓扑
案例配置需求
1、 配置PC1、PC2属于VLAN10;
2、 在SW2上创建VLAN 10,将F0/1、F0/2端口划分到VLAN 10;
3、 配置SW1 F0/23和SW2 F0/23 为Trunk链路,封装协议使用dot1q;
4、 配置SW2 F0/1 属于VLAN 20;
5、 配置SW2的VLAN 10 IP地址为192.168.10.254/24,VLAN 20的IP地址为192.168.20.254/24;
6、 配置DHCP Server地址为192.168.10.1,网关为192.168.20.254;
7、 配置DHCP POOL,为PC 分配IP地址;
8、 在SW2 上启用DHCP Snooping,防止Attacker DHCP 欺骗攻击;
案例配置思路
1、 在SW2上创建VLAN 10,并将F0/1、F0/2划分到VLAN 10。
2、 配置SW1 F0/23和SW2 F0/23 为Trunk链路,封装协议使用dot1q。
3、 配置SW2 F0/1 属于VLAN 20。
4、 配置SW2的VLAN 10 IP地址为192.168.10.254/24,VLAN 20的IP地址为192.168.20.254/24。
5、 配置DHCP Server地址为192.168.10.1,网关为192.168.20.254。
6、 配置DHCP POOL,为PC 分配IP地址。
7、 在SW2 上启用DHCP Snooping,防止Attacker DHCP 欺骗攻击。
8、 配置PC,动态获取IP地址。
注意事项
若交换机下联有Hub、路由器等设备,若网络中有
静态IP地址存在,配置snooping+dai以后会造成小范围内多个用户不能上网。因此建议先在交换机开启snooping,观察网络没有异常以后,逐个vlan开启DAI功能。